From bc121a5a456b564618423b67a6aef859c0ba6a87 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Fri, 8 Jan 2021 18:25:29 +0100 Subject: [PATCH] rpcd-mod-luci: allow finding suffixed libwinfo.so Recent versions ship a version suffixed libiwinfo.so, therefor we cannot rely on a fixed path name anymore. Use globbing to find matching libraries and load the first one we find. Fixes: #4718 Signed-off-by: Jo-Philipp Wich --- libs/rpcd-mod-luci/src/luci.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/libs/rpcd-mod-luci/src/luci.c b/libs/rpcd-mod-luci/src/luci.c index 94ccdf2716..a16418d49d 100644 --- a/libs/rpcd-mod-luci/src/luci.c +++ b/libs/rpcd-mod-luci/src/luci.c @@ -802,11 +802,19 @@ static bool rpc_luci_get_iwinfo(struct blob_buf *buf, const char *devname, struct iwinfo_crypto_entry crypto = {}; struct iwinfo_hardware_id ids = {}; const struct iwinfo_ops *iw; - void *iwlib, *o, *o2, *a; - int nret; + void *iwlib = NULL; + void *o, *o2, *a; + glob_t paths; + int nret, i; if (!iw_backend || !iw_close || !iw_modenames) { - iwlib = dlopen("libiwinfo.so", RTLD_LAZY | RTLD_LOCAL); + if (glob("/usr/lib/libiwinfo.so*", 0, NULL, &paths) != 0) + return false; + + for (i = 0; i < paths.gl_pathc && !iwlib; i++) + iwlib = dlopen(paths.gl_pathv[i], RTLD_LAZY | RTLD_LOCAL); + + globfree(&paths); if (!iwlib) return false; -- 2.30.2